//获取应用实例(获取app.js全局变量必须获取应用实例)
const App = getApp()

//网络请求封装
import Request_post from "../../../../request/Request_post"
import Request_get from "../../../../request/Request_get"

//系统设置项目
import config from "../../../../config/config"

//网络图片本地缓存方法
import cacheimg from "../../../../utils/cacheImg"

//引入时间函数
var dateArray = require("../../../../utils/CustomFunction/getDayFirstNowLast.js")
var time = require("../../../../utils/CustomFunction/getNowTime.js")

//引入日期时间：（格式化、反格式化）函数
var formatDate = require("../../../../utils/CustomFunction/dateFormat.js")
var unformatDate = require("../../../../utils/CustomFunction/dateUnFormat.js")

// 对象数组排序：升序排列
let sorting = require("../../../../utils/CustomFunction/objArr_sort")






Page({

	/**
	 * 页面的初始数据
	 */
	data: {

    dropDownMenuTitle: ['楼宇','楼层','业态','排序'],
    buildid:"%",
    floorid:"%",
    sdetobid:"%",


    // // 外链资源
    // sdeLogo_Default:config.imageUrl+"sdeLogo_Default.png",
    // build:config.imageUrl+"build.png",
    // floor:config.imageUrl+"floor.png",
    // sdetob:config.imageUrl+"sdetob.png",

    pageImage: 
    [ 
      {key: "sdeLogo_Default",value: config.imageUrl+"sdeLogo_Default.png"},
      {key: "build",value: config.imageUrl+"build.png"},
      {key: "floor",value: config.imageUrl+"floor.png"},
      {key: "sdetob",value: config.imageUrl+"sdetob.png"},
    ],

    
  },
  
  /** 外链图片Url资源，缓存到本地 */
  storeImage:function(){
    var that = this
    let obj = {}
    let pageimgArr = that.data.pageImage
    // 图片外链url：ip:端口 替换成 域名（外链资源不做域名转换了，而是外链资源原始链接必须就是域名url）
    // pageimgArr.forEach(i => {i.value = config.domainName + i.value.split('/').slice(3).join('/')})
    // 调用本地文件缓存方法 mapCacheUrl
    pageimgArr = pageimgArr.map(i => ({
      ...i,imgpath:cacheimg.mapCacheUrl(i.value)
    }))  
    // 数组转换为对象
    pageimgArr.forEach(i => {obj[i.key] = i.imgpath})
    that.setData({pageStoreimg: obj })
    // console.log(that.data.pageStoreimg)

  },

  /**点击下拉控件 获得点击的值 */
	selectedItem: function(e) {
    var that = this
    // console.log(e)
    //点击组件后，用e.detail.index来区分是那个组件的值
    if(e.detail.index == '1'){
      that.setData({
        buildid:e.detail.selectedId
      })
      //点击选择 buildid 后,重新请求02-010 店铺列表
      Request_get.get(
        config.domainName+"api_wxmkt_server/base/listognsde",
        {
          cpnid:"",
          sdpid:"",
          buildid: that.data.buildid,
          floorid: that.data.floorid,
          sdeclsid:"",
          sdetobid: that.data.sdetobid,
          sdeid:"",
        },
      function(res){
        if(res != 'undefined' && res.return_no == 1){
          if(App.globalData.Erpimage_Locstr ==='y'){
            // 图片Url链接 做本地缓存
            let array = res.return_data
            for(var i in array){
              if(array[i].logo){
                array[i].logo = config.domainName + array[i].logo.split('/').slice(3).join('/');
              }
            }
            that.setData({
              sdeList:array.map(i => ({
                ...i,
                imgpath:cacheimg.mapCacheUrl(i.logo)
              }))  
            }) ;
          }else{
            // 使用res的原始回调（数组对象中增加一个imgpath的属性值，因为html标签中用imgpath做渲染）
            that.setData({
              sdeList:res.return_data.map(i => ({
                ...i,
                imgpath:i.logo
              }))  
            })
          }

          that.sortEvent();
          
        }
      }) 
      
      //同时在重新过滤楼层数组（默认的全部楼层是N个楼宇的所有楼层{"如果多个楼宇下的楼层用了相同的楼层编码，则进入页面后默认全部都会显示 当选择某个楼层后，所有楼宇的相同楼层编码的店铺都会被查询出来"}，选择楼宇后，则只应该显示该楼宇下的楼层）
      /*------------------------------ 根据选择的楼宇信息过滤数据，以获取对应楼宇下的楼层数组 ------------------------------*/
      Request_get.get(
      config.domainName+"api_wxmkt_server/base/listognfloor",
      {},
      function(res){
        const list =  res.return_data.filter((item, index, arr) => item.buildid == that.data.buildid)
        // console.log(list)
        //合并 res.return_data 数组中的N个子数组 
        var TempdisplayData2 = [];
        const arrayList = list
        for(var i = 0 ; i < arrayList.length; i++){          
          arrayList[i].detail_data.map(function (value, index, array) {
            TempdisplayData2 = TempdisplayData2.concat(value);
          });
        }
        //将TempdisplayData2数组进行属性重新命名：使用map方法
        let displayData2 = TempdisplayData2.map(i => {
          return {
            id:i.floorid,
            title:i.floordes,
          };
        });
        //重构的数组 Data2 再增加一个对象
        displayData2.unshift({
          title:"全部楼层",
          id:"%",
        })
        that.setData({
          data2:displayData2
        })
      })
      
    }else if(e.detail.index == '2'){
      that.setData({
        floorid:e.detail.selectedId
      })      

      //点击选择楼层后,重新请求02-010 店铺列表
      Request_get.get(
      config.domainName+"api_wxmkt_server/base/listognsde",
      {
        cpnid:"",
        sdpid:"",
        buildid: that.data.buildid,
        floorid: that.data.floorid,
        sdeclsid:"",
        sdetobid: that.data.sdetobid,
        sdeid:"",
      },
      function(res){
        if(res != 'undefined' && res.return_no == 1){

          if(App.globalData.Erpimage_Locstr ==='y'){
            // 图片Url链接 做本地缓存
            let array = res.return_data
            for(var i in array){
              if(array[i].logo){
                array[i].logo = config.domainName + array[i].logo.split('/').slice(3).join('/');
              }
            }
            that.setData({
              sdeList:array.map(i => ({
                ...i,
                imgpath:cacheimg.mapCacheUrl(i.logo)
              }))  
            }) ;
          }else{
            // 使用res的原始回调（数组对象中增加一个imgpath的属性值，因为html标签中用imgpath做渲染）
            that.setData({
              sdeList:res.return_data.map(i => ({
                ...i,
                imgpath:i.logo
              }))  
            })
          }
          that.sortEvent();
        }
      })
    }else if(e.detail.index == '3'){
      that.setData({
        sdetobid:e.detail.selectedId
      }) 
      //点击选择店铺业态后,重新请求02-010 店铺列表
    Request_get.get(
      config.domainName+"api_wxmkt_server/base/listognsde",
      {
        cpnid:"",
        sdpid:"",
        buildid: that.data.buildid,
        floorid: that.data.floorid,
        sdeclsid:"",
        sdetobid: that.data.sdetobid,
        sdeid:"",
      },
      function(res){
        if(res != 'undefined' && res.return_no == 1){
          if(App.globalData.Erpimage_Locstr ==='y'){
            // 图片Url链接 做本地缓存
            let array = res.return_data
            for(var i in array){
              if(array[i].logo){
                array[i].logo = config.domainName + array[i].logo.split('/').slice(3).join('/');
              }
            }
            that.setData({
              sdeList:array.map(i => ({
                ...i,
                imgpath:cacheimg.mapCacheUrl(i.logo)
              }))  
            }) ;
          }else{
            // 使用res的原始回调（数组对象中增加一个imgpath的属性值，因为html标签中用imgpath做渲染）
            that.setData({
              sdeList:res.return_data.map(i => ({
                ...i,
                imgpath:i.logo
              }))  
            })
          }
          that.sortEvent();
        }
      })
    }else if(e.detail.index == '4'){
      that.onLoad();
    }
    // console.log('index：'+e.detail.index+"   "+'id：'+e.detail.selectedId)

  },

  // 跳转到引导注册页面
  redirect:function(){
    // 会员是否注册的标志regflg === 'n'时，路由到引导注册页面
    getApp().loginPromise.then(v => {	//app.js的Promise成功回调（全局变量赋值成功后才执行请求）
      if(App.globalData.regflg === 'n'){
        wx.redirectTo({
          url: '/pages/Public/boot_regstration/boot_regstration',
        })
        return;
      }
    })
  },

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
    var that = this
    console.log(App.globalData.regflg)
    that.redirect()
    // 外链资源图片链接 本地缓存
    if(App.globalData.ResourcesLink_Locstr === 'y'){
      that.storeImage();
    // 外链资源图片链接 直接读取url地址
    }else{
      let pageimgArr = that.data.pageImage
      let object = {}
      pageimgArr.forEach(i => {object[i.key] = i.value}) // 数组转换为对象
      that.setData({pageStoreimg: object })
      // console.log(that.data.pageStoreimg)
    }


    
    


    /*****************************************************下拉菜单数组重构 *****************************************************/
    /*------------------------------ data1:楼宇 ------------------------------*/
    //请求02-007 楼宇楼层
    Request_get.get(
      config.domainName+"api_wxmkt_server/base/listognfloor",
      {},
    function(res){
      //将原始的返回数组进行属性重新命名：使用map方法，传入一个参数，如:i，遍历原始数组，return返回需要重构命名的属性
      let displayData1 = res.return_data.map(i => {
        return {
          title:i.builddes,
          id:i.buildid,
          /** 数组重构时，对象是一个数组，则先嵌套一个map方法 如：楼宇下的楼层*/
          // childModel:i.detail_data.map(a => {
          //   return {
          //     title:a.floordes,
          //     id:a.floorid
          //   }
          // })
        };
      });
      //重构的数组 Data1 再增加一个对象
      displayData1.unshift({
        title:"全部楼宇",
        id:"%",
        // childModel:[{
        //   title:"全部",
        //   id:"all"
        // }]
      })
      that.setData({
        data1:displayData1
      })

      /*------------------------------ data2:楼层 ------------------------------*/
      //请求02-007 楼宇楼层
      Request_get.get(
      config.domainName+"api_wxmkt_server/base/listognfloor",
      {},
      function(res){
        // console.log(res.return_data)
        //合并 res.return_data 数组中的N个子数组 
        var TempdisplayData2 = [];
        const arrayList = res.return_data
        for(var i = 0 ; i < arrayList.length; i++){          
          arrayList[i].detail_data.map(function (value, index, array) {
            TempdisplayData2 = TempdisplayData2.concat(value);
          });
        }
        //将TempdisplayData2数组进行属性重新命名：使用map方法
        let displayData2 = TempdisplayData2.map(i => {
          return {
            id:i.floorid,
            title:i.floordes,
          };
        });
        //重构的数组 Data2 再增加一个对象
        displayData2.unshift({
          title:"全部楼层",
          id:"%",
        })
        that.setData({
          data2:displayData2
        })
      })

      /*------------------------------ data3:店铺业态 ------------------------------*/
      //请求02-008 店铺业态
      Request_get.get(
      config.domainName+"api_wxmkt_server/base/listsdetob",
      {},
      function(res){
        let displayData3 = res.return_data.map(i => {
          return{
            id:i.tobid,
            title:i.tobdes
          }
        })
        //对重构的数组 displayData2 再增加一个 对象
        displayData3.unshift({
          id:"%",
          title:"全部业态",
        })
        that.setData({
          data3:displayData3
        })

      })

      /*------------------------------ data4:排序 ------------------------------*/
      that.setData({
        data4: [{ 
          id: "%",
          title: '默认排序'
        }],
      })

      //请求02-010 店铺列表
      Request_get.get(
        config.domainName+"api_wxmkt_server/base/listognsde",
        {
          cpnid:"",
          sdpid:"",
          buildid:"",
          floorid:"",
          sdeclsid:"",
          sdetobid:"",
          sdeid:"",
        },
      function(res){
        if(res != "undefined" && res.return_no == 1){
          if(App.globalData.Erpimage_Locstr ==='y'){
            // 图片Url链接 做本地缓存
            let array = res.return_data
            for(var i in array){
              if(array[i].logo){
                array[i].logo = config.domainName + array[i].logo.split('/').slice(3).join('/');
              }
            }
            that.setData({
              sdeList:array.map(i => ({
                ...i,
                imgpath:cacheimg.mapCacheUrl(i.logo)
              }))  
            }) ;
          }else{
            // 使用res的原始回调（数组对象中增加一个imgpath的属性值，因为html标签中用imgpath做渲染）
            that.setData({
              sdeList:res.return_data.map(i => ({
                ...i,
                imgpath:i.logo
              }))  
            })
          }

          that.sortEvent();
        
        }
      })
    })
  },
  
  // 排序方法：
  sortEvent:function(){
    var that = this
    // 店铺列表排序（原始数组对象中增加一个sortMark属性：用 楼宇编码 + 楼层编码 拼接）
    var ObjArr = that.data.sdeList
    ObjArr.forEach((i)=>{
      i.sortMark = i.buildid + i.floorid
    })
    ObjArr.sort(sorting.compareValues('sortMark'));
    that.setData({
      sdeList:　ObjArr
    })
    console.log(that.data.sdeList)
  },


	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {

	}
})